Módulo:Redirección
local p = {} -- Obtiene un objeto mw.title, utilizando pcall para evitar generar errores de script si -- están por encima del límite de recuento porque la función es costosa (entre otras causas posibles). local function getTitle(...) local success, titleObj = pcall(mw.title.new, ...) if success then return titleObj else return nil end end -- Obtiene el nombre de una página que conduce a una redirección, o nil si no es un -- página de redirección. function p.getTargetFromText(text) return mw.ustring.match( text, "^%s*#RrEeDdIiRrEeCc%a*%s*:?%s*%[%[([^%%]-)%]%]" ) end -- Obtiene el objeto del título. Ambos nombres de las páginas y objetos de título se permiten -- como entrada. function p.getTarget(page) local titleObj if type(page) 'string' or type(page) 'number' then titleObj = getTitle(page) elseif type(page) 'table' and type(page.getContent) 'function' then titleObj = page else error(string.format( "Argumento no válido #1 para 'getTarget'" .. " (Esperado string - texto , numbre - número o objeto de título y el tipo dado es %s)", type(page) ), 2) end if not titleObj or not titleObj.isRedirect then return nil end -- Encuentra el destino de la redirección mediante correspondencia de cadenas en el contenido de la página. local target = p.getTargetFromText(titleObj:getContent() or "") if target then local targetTitle = getTitle(target) if targetTitle then return targetTitle.prefixedText else return nil end else -- La página es una redirección, pero no coincidente. Esto indica un error en -- la búsqueda de patrones de redirección, así lanzar un error. error(string.format( 'Módulo:Redirección: Error, no se puede parsear la redirección - %s', titleObj.prefixedText )) end end --Teniendo en cuenta un solo nombre de la página determina que página se redirige a y devuelve el -- nombre de la página de destino, o el nombre de la página pasa cuando no una redirección. El pasado -- nombre de la página se puede dar como texto sin formato o como vínculo. -- -- Devuelve nombre de la página como texto sin formato, o cuando se da el parámetro de soporte, como un -- vínculo. Devuelve un mensaje de error cuando la página no existe o la redirección -- de destino no se puede determinar por alguna razón. function p.luaMain(rname, bracket) if type(rname) ~= "string" or not rname:find("%S") then return nil end bracket = bracket and "%s" or "%s" rname = rname:match("%[%(.+)%%]") or rname local target = p.getTarget(rname) local ret = target or rname ret = getTitle(ret) if ret then ret = ret.prefixedText return bracket:format(ret) else return nil end end -- Provides access to the luaMain function from wikitext. function p.main(frame) local args = require('Módulo:Argumentos').obtenerArgumentos(frame, {frameOnly = true}) return p.luaMain(args1, args.bracket) or '' end -- Devuelve "sí" si la página especificada es una página de redirección o un string en blanco en caso contrario function isRedirectPage(titleObj) if not titleObj then return '' end if titleObj.isRedirect then return 'sí' else return '' end end -- Devuelve "sí" si la página especificada es una página de redirección o un string en blanco en caso contrario function p.isRedirect(frame) local args = require('Módulo:Argumentos').obtenerArgumentos(frame, {frameOnly = true}) local titleObj = getTitle(args1) if not titleObj then mw.log('No generado objeto título') return '' end local procesado, resultado = pcall(isRedirectPage,titleObj) if procesado then mw.log('procesado true' .. resultado) return resultado else mw.log('procesado false') return '' end end return p